#ifndef DB_H
#define DB_H

#include <Poco/Data/SessionPool.h>
#include <string>
#include <memory>

namespace servercom {

/**
 * @brief 数据库模块主接口
 */
class Database {
public:
    /**
     * @brief 初始化数据库连接池
     * @param db_type 数据库类型(mysql/sqlite/postgresql)
     * @param connection_string 连接字符串
     * @param min_sessions 最小连接数
     * @param max_sessions 最大连接数
     */
    static void initialize(const std::string& db_type, 
                          const std::string& connection_string,
                          int min_sessions = 1,
                          int max_sessions = 8);

    /**
     * @brief 获取数据库会话
     * @return Poco::Data::Session 数据库会话对象
     */
    static Poco::Data::Session getSession();

    /**
     * @brief 释放数据库资源
     */
    static void shutdown();

private:
    static std::unique_ptr<Poco::Data::SessionPool> session_pool_;
};

} // namespace servercom

#endif // DB_H